package com.ruoyi.common.core.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;

import java.util.Date;

@Data
public class BaseOrder extends BaseEntity {
    /**
     * 订单id
     */
    private String orderId;
    /**
     * 订单类型。0：计时收费订单，1：套餐收费订单，2：拼团订单。
     */
    @Excel(name = "订单类型。0：计时收费订单，1：套餐收费订单，2：拼团订单。")
    private Integer orderType;
    /**
     * 订单状态。0：待付款，1：待使用，2：使用中，3: 已关闭，4：已完成
     */
    @Excel(name = "订单状态。0：待付款，1：待使用，2：使用中，3: 已关闭，4：已完成")
    private Integer orderStatus;

    /**
     * 订单状态文本描述。订单状态。0：待付款，1：待使用，2：使用中，3: 已关闭，4：已完成
     */
    @Excel(name = "订单状态文本描述。订单状态。0：待付款，1：待使用，2：使用中，3: 已关闭，4：已完成")
    private String orderStatusDesc;

    /**
     * 订单文本描述，示例：计时计费订单-押金。
     */
    @Excel(name = "订单文本描述，示例：计时计费订单-押金。")
    private String orderDesc;

    /**
     * 订单所属景区id
     */
    @Excel(name = "订单所属景区id")
    private Long scenicId;

    /**
     * 订单所属景区名称。
     */
    private String scenicName;

    /**
     * 订单所属码头id
     */
    @Excel(name = "订单所属码头id")
    private Long wharfId;
    /**
     * 订单所属码头名称。
     */
    private String wharfName;

    /**
     * 订单所属船只id
     */
    @Excel(name = "订单所属船只id")
    private Long boatId;

    /**
     * 订单所属船只的编号。
     */
    private String boatCode;

    /**
     * 订单所属的用户id。
     */
    @Excel(name = "订单所属的用户id。")
    private Long userId;

    /**
     * 订单实际持续的时长，单位：毫秒。
     */
    @Excel(name = "订单实际持续的时长，单位：毫秒。")
    private Long realDuration;

    /**
     * 订单开始时间(开始计费时间)。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "订单开始时间(开始计费时间)。", width = 30, dateFormat = "yyyy-MM-dd")
    private Date beginTime;

    /**
     * 订单结束时间(结束计费时间)。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "订单结束时间(结束计费时间)。", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;

    /**
     * 订单关闭时间(结束计费时不代表订单关闭，可能存在结束计费当还有待支付费用，在待支付费用结清前订单不能关闭)。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "订单关闭时间(结束计费时不代表订单关闭，可能存在结束计费当还有待支付费用，在待支付费用结清前订单不能关闭)。", width = 30, dateFormat = "yyyy-MM-dd")
    private Date closedTime;

    /**
     * 确认上船剩余时长。
     */
    private Long confirmOnBoatRemainTime;
}
